|
Acumulador |
Top |
Acumulador (ACC)
Variable interna que lleva el resultado de las operaciones. Aparte del acumulador principal ACC existen acumuladores secundarios (ACC(-1), ACC(-2), etc). Algunas operaciones producen un desplazamiento de acumuladores para que los estados anteriores no se pierdan (quedan en los secundarios). Algunas operaciones requieren de los datos memorizados en los acumuladores secundarios, como por ejemplo el contador.
|
Rotación |
Nuevo valor -> Acc -> Acc(-1) -> Acc(-2) .... |
|
Rotación inversa |
Acc <- Acc(-1) <- Acc(-2) <- Acc(-3).... |
Normalmente en una rotación inversa en ACC queda el resultado de la operación (instrucción) y no el acumulador anterior.
Las instrucciones que hacen una rotación del acumulador son:
A partir del CP121 ROM 2.55 y CP122 ROM 2.03 el stack de acumuladores pasa de 8 a 20.
Ejemplos
Supongamos que la condición es que:
X = 1 si ((A = 1) o (B = 1)) y (C = 1) y (D = 1)
Para que sea 'verdadero' (activado o distinto de cero) C y D deben serlo, y d A y B solo se requiere uno:
LD A ;Acc = A
EQ 1 ;Acc = resultado comparación
LD B ;Acc = B; Acc(1) = comparación anterior
EQ 1 ;Acc = resultado comparación
ORP ;Acc = OR de las 2 comparaciones anteriores
LD C ;Acc = C; Acc(1) = OR comparación
EQ 1 ;Acc = resultado comparación
LD D ;Acc = D; Acc(2) = OR comparación; Acc(1) = comparación anterior
EQ 1 ;Acc = resultado comparación
ANDP ;Acc = Acc AND Acc(1); Acc(1) = Acc(2)
ANDP ;Acc = Acc AND Acc(1)
Supongamos que X = 1 si (A = 0) y (B = 1) y (C = 1) y (D = 1)
LD A ;Acc = A
EQ 0 ;Acc = resultado comparación
LD B ;Acc = B; Acc(1) = comparación de A
EQ 1 ;Acc = resultado comparación
LD C ;Acc = C; Acc(1) = comparación de B; Acc(2) = comparación de A
EQ 1 ;Acc = resultado comparación
LD D ;Acc = D; Acc(1) = comparación de C; Acc(2) = comparación de B; Acc(3) = comparación de a
EQ 1 ;Acc = resultado comparación
ANDP ;Acc = Acc AND Acc(1); Acc(1) = Acc(2); Acc(2) = Acc(3)
ANDP ;Acc = Acc AND Acc(1); Acc(1) = Acc(2)
ANDP ;Acc = Acc AND Acc(1)